/*java中cpu分给每个线程的时间片是随机的并且在java中好多都是多个线程共用一个资源，
 * 比如火车卖票，火车票是一定的，但卖火车票的窗口到处都有，每个窗口就相当于一个线程，
 * 这么多的线程共用所有的火车票这个资源。
 * 这么多的线程共用所有的火车票这个资源。
 * 如果在一个时间点上，两个线程同时使用这个资源，
 * 那他们取出的火车票是一样的（座位号一样），这样就会给乘客造成麻烦。
 *
 *
 ！！！如果几个线程没有 java 同步锁(synchronized)而线程随机获得资源（火车票）会出现极其混乱的局面！！！如下：
			Rual号窗口卖出：10号票
			Beckham号窗口卖出：9号票
			Emiya号窗口卖出：8号票
			Rual号窗口卖出：7号票
			Beckham号窗口卖出：6号票
			Emiya号窗口卖出：5号票
			Rual号窗口卖出：4号票
			Emiya号窗口卖出：3号票
			Beckham号窗口卖出：2号票
			Rual号窗口卖出：1号票
			Emiya号窗口卖出：0号票
			Beckham号窗口卖出：-1号票

 */
package thread.singleton.watson;

public class Thread001 implements Runnable{
    
	private static int ticket = 10;
	public Thread001() {
		// TODO Auto-generated constructor stub
	}
	
	@Override
	public void run() {
		// TODO Auto-generated method stub
		for(int i=1;i<=10;i++){
			if(this.ticket>0){
				try{
					Thread.sleep(1000);
				}catch(Exception ex){
					ex.printStackTrace();
				}
				System.out.println(Thread.currentThread().getName()+"号窗口卖出："+this.ticket--+"号票");
			}
		}
		
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
 		
		Thread001 demo=new Thread001();
			 //基于火车票创建三个窗口，三个窗口随时随机获得cpu线程
		     //线程一调用run()方法
			 new Thread(demo,"Rual").start();
			 //线程二调用run()方法
			 new Thread(demo,"Beckham").start();
			 //线程三调用run()方法
			 new Thread(demo,"Emiya").start();
		 
		
	}

	

}
